package fr.jibhaine
{
	import flash.display.GradientType;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.filters.BitmapFilterQuality;
	import flash.filters.BlurFilter;
	import flash.media.SoundMixer;
	import flash.utils.ByteArray;
	
	public class AudioSpectre extends Sprite
	{
		private var ba:ByteArray = new ByteArray();
		
		public var isPlaying:Boolean=true;
		
		public function AudioSpectre()
		{
			super();
			
			this.filters=[new BlurFilter(2, 2, BitmapFilterQuality.HIGH)];
	        //this.graphics.moveTo(0,0);
            addEventListener( Event.ENTER_FRAME, enterFrameHandler );
		}
		
		//lance le rendu a chaque changement de frame
        private function enterFrameHandler( event : Event ) : void
        {
        	if(isPlaying){
        		//récupère les informations du son dans un tableau de 512 valeurs
        		SoundMixer.computeSpectrum(ba, true);
        		
        		//effacement du contenu du sprite
        		this.graphics.clear();
				this.graphics.lineStyle(1, 0x249CE8,1);
	        	
				this.graphics.lineGradientStyle(GradientType.LINEAR,[0x000099,0x009CE8],[1,1],[0,255]);
	        	//hauteur des barres
	        	var n:Number;
	        	//pour le positionnement des lignes
	        	var x:int;
	        	var y:int=50;
	        	
        		//on trace une ligne pour chaque entrée du tableau;
	        	for (var i:int=0; i<512; i++) {
	        		//calcul de la hauteur de la ligne
	        		n = Math.round(ba.readFloat() * y);
	        		
					//partie gauche du spectre (piste stéréo gauche) on part du milieu vers la gauche
					if(i<256){	x = 256 - i	}
					//partie droite on continue normalement;
					else{		x = i		}
					
			        if(n>0){
			        	//déplacement du point de tracage
			        	this.graphics.moveTo(x,y);
			        	//tracage de la ligne
			        	this.graphics.lineTo(x,y-Math.round(n));
	        		trace("Ligne"+x+" ("+y+","+(y-Math.round(n))+")");
		        	}
	        	}
        	}
        }

	}
}